//
// Created by wkm on 2024-04-21.
//

#ifndef AES128CHIPSYSTEMC_SCHEDULEKEY_DRIVER_H
#define AES128CHIPSYSTEMC_SCHEDULEKEY_DRIVER_H

#include "../core_module/CONSTANT.h"

SC_MODULE(schedulekey_driver) {
    sc_in<bool> d_clk;
    sc_out<bool> d_reset, d_start;
    sc_out<sc_uint<4>> get_round; //获取第几轮的密钥
    sc_out<sc_uint<DATA_SIZE>>
            d_init_key_1, d_init_key_2, d_init_key_3, d_init_key_4,
            d_init_key_5, d_init_key_6, d_init_key_7, d_init_key_8,
            d_init_key_9, d_init_key_10, d_init_key_11, d_init_key_12,
            d_init_key_13, d_init_key_14, d_init_key_15, d_init_key_16;

    void prc_schedulekey_driver();

    SC_CTOR(schedulekey_driver) {
        SC_THREAD(prc_schedulekey_driver);
        sensitive_pos << d_clk;
    }
};

#endif //AES128CHIPSYSTEMC_SCHEDULEKEY_DRIVER_H
